]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
st-theme-node: Update corner textures on allocation size changes
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 10 Jul 2013 00:33:08 +0000 (02:33 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Wed, 10 Jul 2013 15:35:11 +0000 (17:35 +0200)
Commit 318283fc70 optimized box-shadow rendering by not recreating
shadow materials on every allocation change. Other handles cannot
be reused and are updated regularly, however the patch missed the
cached corner materials - while those can be reused, we still need
to ensure that the currently used paint state references them.

https://bugzilla.gnome.org/show_bug.cgi?id=703909

src/st/st-theme-node-drawing.c

index 1a2cea316aba5d2d1af9ee235a338b20fce9c38e..0b76f6b2d676da6e091a958c34f4950512cd252d 100644 (file)
@@ -1537,6 +1537,15 @@ st_theme_node_update_resources (StThemeNodePaintState *state,
       state->prerendered_texture = st_theme_node_prerender_background (node, width, height);
       state->prerendered_material = _st_create_texture_material (state->prerendered_texture);
     }
+  else
+    {
+      int corner_id;
+
+      for (corner_id = 0; corner_id < 4; corner_id++)
+        if (state->corner_material[corner_id] == COGL_INVALID_HANDLE)
+          state->corner_material[corner_id] =
+            st_theme_node_lookup_corner (node, width, height, corner_id);
+    }
 
   if (had_box_shadow)
     state->box_shadow_material = _st_create_shadow_material (box_shadow_spec,